#include<iostream>
using namespace std;
#include<algorithm>
#include<cstdint>
const int N = 1e6 + 10;

int arr[N];
int mp[N];
int main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++) cin >> arr[i];
	int left = 1, right = 1, kinds = 0, a = 1e4, b = 0, len = 1e6 + 10;
	while (right <= n)
	{
		int key = arr[right];
		//如果key值映射的画家id第一次出现，就让kinds++ 
		if (mp[key] == 0) ++kinds;
		//不管key值映射的画家id出现了几次，都进哈希表 
		mp[key]++ ;
		//如果kinds == 画家总数 
		while (kinds == m)
		{
			//先获取一下此时的费用 
			int size = right - left + 1;
			//如果费用小于上一次满足kinds == m时的费用，就更新len的值 
			if (size < len)//注意！不要加上= ,如果出现费用相同的情况，我们只取最小的a的值 
			{
				a = left;
				len = size;
				b = right;//同理 
			}
			//出窗口 
			mp[arr[left]]--;
			//如果出窗口的值是最后一次出现的值，就让kinds--，意味着right可以向后移动了！ 
			if (mp[arr[left]] == 0) --kinds;
			++left;
		}
		++right;
	}
	std::cout << a << " " << b << endl;
	return 0;
}